////////////////////////////////////////////////////////////////////////////////
/// @file     mm32l0xx_it.c
/// @author   AE TEAM
/// @brief    Main Interrupt Service Routines.
///           This file provides template for all exceptions handler
///           and peripherals interrupt service routine.
////////////////////////////////////////////////////////////////////////////////
/// @attention
///
/// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
/// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
/// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
/// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
/// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
/// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
///
/// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
////////////////////////////////////////////////////////////////////////////////

// Define to prevent recursive inclusion
#define _MM32L0xx_IT_C_

// Files includes
#include "platform_config.h"
#include "mm32l0xx_it.h"
#include "usb_lib.h"
#include "usb_istr.h"
#include "hw_config.h"
#include "hal_uart.h"

////////////////////////////////////////////////////////////////////////////////
/// @addtogroup MM32_Hardware_Abstract_Layer
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @addtogroup USB_HAL
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @addtogroup USB_Exported_Functions
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles NMI exception
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////

void NMI_Handler(void)
{
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles Hard Fault exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void HardFault_Handler(void)
{
    // Go to infinite loop when Hard Fault exception occurs
    while (1) {
    }
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles Memory Manage exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void MemManage_Handler(void)
{
    // Go to infinite loop when Memory Manage exception occurs
    while (1) {
    }
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles Bus Fault exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void BusFault_Handler(void)
{
    // Go to infinite loop when Bus Fault exception occurs
    while (1) {
    }
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles Usage Fault exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void UsageFault_Handler(void)
{
    // Go to infinite loop when Usage Fault exception occurs
    while (1) {
    }
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles SVCall exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void SVC_Handler(void)
{
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles Debug Monitor exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void DebugMon_Handler(void)
{
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles PendSVC exception.
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void PendSV_Handler(void)
{
}



////////////////////////////////////////////////////////////////////////////////
/// @brief     This function handles USB Low Priority or CAN RX0 interrupts
///            requests
/// @param     None
/// @retval    None
////////////////////////////////////////////////////////////////////////////////
void USB_LP_CAN1_RX0_IRQHandler(void)
{
    USB_Istr();
}
////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles USB Low Priority or CAN RX0 interrupts
///         requests
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////


void USB_IRQHandler(void)
{

    USB_Istr();

}

////////////////////////////////////////////////////////////////////////////////
/// @brief  This function handles UART1 global interrupt request..
/// @param  None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
extern u8 status_UsbUart;
extern __IO u8 bIntPackSOF ;
extern u32 count_in;

void UART1_IRQHandler(void)
{
    if (UART_GetITStatus(UART1, UART_IT_RXIEN) != RESET) {
        UART_ClearITPendingBit(UART1, UART_IT_RXIEN);
        // Send the received data to the PC Host
        status_UsbUart |= 1 << 5;
        UART_To_USB_Send_Data();
        bIntPackSOF = 0;
    }
}




/// @}

/// @}

/// @}
